using System;
using EnvDTE;

namespace Microsoft.WowAddonStudio.Tests.Common.Mocks
{
	/// <summary>
	/// 
	/// </summary>
	public class MockItemOperations : ItemOperations
	{
		/// <summary>
		/// Initializes a new instance of the <see cref="MockItemOperations"/> class.
		/// </summary>
		/// <param name="dte">The DTE.</param>
		public MockItemOperations(DTE dte)
		{
			DTE = dte;
		}

		#region ItemOperations Members

		/// <summary>
		/// Opens a file as though you invoked an Open File command in the integrated development environment (IDE).
		/// </summary>
		/// <param name="FileName">Required. The full path and name of the file to be opened.</param>
		/// <param name="ViewKind">Optional. A <see cref="T:EnvDTE.Constants"/>vsViewKind* constant specifying the type of view in which to create the file.</param>
		/// <returns>A <see cref="T:EnvDTE.Window"/> object.</returns>
		public Window OpenFile(string FileName, string ViewKind)
		{
			return null;
		}

		/// <summary>
		/// Creates a file as though you invoked a New File command in the integrated development environment (IDE).
		/// </summary>
		/// <param name="Item">Required. The virtual path to the item based on the tree nodes from the left pane of the dialog box and the item name from the right pane.</param>
		/// <param name="Name">Optional. The name you type in the Default Name box in the dialog box. This name also becomes the suggested Save As name when you save the document.</param>
		/// <param name="ViewKind">Optional. A <see cref="T:EnvDTE.Constants"/>vsViewKind* constant specifying the type of view in which to create the file.</param>
		/// <returns>A <see cref="T:EnvDTE.Window"/> object.</returns>
		public Window NewFile(string Item, string Name, string ViewKind)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Indicates whether or not the specified saved file is currently open in the specified view.
		/// </summary>
		/// <param name="FileName">Required. The absolute path to the specified saved file. If the file has just been created but not yet saved, then <see cref="M:EnvDTE.ItemOperations.IsFileOpen(System.String,System.String)"/> returns false.</param>
		/// <param name="ViewKind">Optional. A <see cref="T:EnvDTE.Constants"/>.vsViewKind* constant representing the type of view in which the saved file is currently open.</param>
		/// <returns>
		/// A Boolean value indicating true if the file is open in the specified view, false if not.
		/// </returns>
		public bool IsFileOpen(string FileName, string ViewKind)
		{
			return false;
		}

		/// <summary>
		/// Adds an existing item to the current project.
		/// </summary>
		/// <param name="FileName">Required. The full path and file name of the item to be added.</param>
		/// <returns>
		/// A <see cref="T:EnvDTE.ProjectItem"/> object.
		/// </returns>
		public ProjectItem AddExistingItem(string FileName)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Adds a new item to the current project.
		/// </summary>
		/// <param name="Item">Optional. The virtual path to the item based on either the UI resource string (defined in the Remarks section below) or occasionally as displayed in the contents of the New File dialog box in "<paramref name="category"/>\<paramref name="templatename"/>" format. <paramref name="Category"/> comes from the left pane of the dialog box and <paramref name="templatename"/> from the right pane. For example, to add a new HTML file to a Visual Basic project, you would use "General\HTML Page." See the Remarks section for more information.</param>
		/// <param name="Name">Optional. The display name to use for the item when it is added to a project.</param>
		/// <returns>
		/// A <see cref="T:EnvDTE.ProjectItem"/> object.
		/// </returns>
		public ProjectItem AddNewItem(string Item, string Name)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Goes to the given URL.
		/// </summary>
		/// <param name="URL">Optional. URL of the file to open. If <paramref name="URL"/> is not specified, the default home page is opened. The default value of <paramref name="URL"/> is "".</param>
		/// <param name="Options">Optional. A <see cref="T:EnvDTE.vsNavigateOptions"/> constant that determines whether the browsed content displays in an external Web browser window or in a new window.</param>
		/// <returns>A <see cref="T:EnvDTE.Window"/> object.</returns>
		public Window Navigate(string URL, vsNavigateOptions Options)
		{
			throw new NotImplementedException();
		}

		/// <summary>
		/// Gets the top-level extensibility object.
		/// </summary>
		/// <value></value>
		/// <returns>A <see cref="T:EnvDTE.DTE"/> object.</returns>
		public DTE DTE
		{
			get; set;
		}

		/// <summary>
		/// Gets the immediate parent object of an <see cref="T:EnvDTE.ItemOperations"/> object.
		/// </summary>
		/// <value></value>
		/// <returns>A <see cref="T:EnvDTE.DTE"/> object.</returns>
		public DTE Parent
		{
			get { return DTE; }
		}

		/// <summary>
		/// Gets all unsaved files and allows the user to save one or more of them.
		/// </summary>
		/// <value></value>
		/// <returns>A <see cref="T:EnvDTE.vsPromptResult"/> value describing the user's action after displaying a dialog box.</returns>
		public vsPromptResult PromptToSave
		{
			get { throw new NotImplementedException(); }
		}

		#endregion
	}
}